package org.lanqiao.dao;

import java.math.BigDecimal;
import java.sql.Date;
import java.util.List;
import org.lanqiao.bean.*;
import org.lanqiao.db.ObjectUtil;

/**
 *Access实体类对应的数据库操作工具
 */
public class AccessDao {
	/**
	 * 将Access对象的信息存入数据库中
	 * @param access要存储的对象
	 * @return 添加成功的信息数量
	 */
	public int addAccess(Access access) {
		//String sql = "【24】 【25】 LANQIAO_ACCESS 【26】(?,?,?,?,?)";
		String sql = "insert into LANQIAO_ACCESS values(?,?,?,?,?)";
		Date newDate = new Date(access.getAccessDate().getTime());
		return new ObjectUtil<Access>().add(sql,access.getAccessId(),access.getAccessUrl(),newDate,access.getAccessFlow(),access.getAccessIp());
	}
	/**
	 * 根据accessId删除指定的数据
	 * @param accessId 要删除的数据的id
	 * @return 被删除的数据的数量
	 */
	public int deleteAccess(String accessId) {
		//String sql = "【27】 【28】 LANQIAO_ACCESS 【29】 ACCESSID = ?";
		String sql = "【27】Delete from 【28】 LANQIAO_ACCESS 【29】where ACCESSID = ?";
		return new ObjectUtil<Access>().delete(sql, accessId);
	}
	/**
	 * 根据accessId修改指定的数据
	 * @param accessId 要修改的数据的ID
	 * @param access 存储修改之后的数据的对象
	 * @return 被修改的数据的数量
	 */

	public int updateAccess(String accessId,Access access) {
		//String sql = "【30】 LANQIAO_ACCESS 【31】 ACCESSURL = ?,ACCESSDATE = ?,ACCESSFLOW = ?,ACCESSIP = ? WHERE ACCESSID = ?";
		String sql = "【30】update LANQIAO_ACCESS 【31】set ACCESSURL = ?,ACCESSDATE = ?,ACCESSFLOW = ?,ACCESSIP = ? WHERE ACCESSID = ?";
		return new ObjectUtil<Access>().update(sql, access.getAccessUrl(),access.getAccessDate(),access.getAccessFlow(),access.getAccessIp(),accessId);
	}
	/**
	 * 精确查找指定accessId的数据
	 * @param accessId 要查找的数据的id
	 * @return 满足条件的数据
	 */
	public Access getAccessById(String accessId){
		//String sql = "【32】 * 【33】 LANQIAO_ACCESS WHERE ACCESSID = ?";
		String sql = "【32】select * 【33】from LANQIAO_ACCESS WHERE ACCESSID = ?";
		return new ObjectUtil<Access>().getOne(sql,Access.class, accessId);
	}
	/**
	 * 模糊查询，查询accessUrl中包含指定文字的所有数据
	 * @param accessUrl 要匹配的指定文字
	 * @return 满足条件的所有数据
	 */
	public List<Access> getAccessList(String accessUrl){
		//String sql = "SELECT * FROM LANQIAO_ACCESS WHERE ACCESSURL 【34】 ?";
		String sql = "SELECT * FROM LANQIAO_ACCESS WHERE ACCESSURL 【34】 ?";
		return new ObjectUtil<Access>().getList(sql, Access.class, "%"+accessUrl+"%");
	}
	/**
	 * 根据访问量倒序查找所有数据
	 * @param accessUrl
	 * @return 排序之后的数据
	 */
	public List<Access> getOrderAccessList(){
		//String sql = "SELECT * FROM LANQIAO_ACCESS 【35】 BY ACCESSFLOW 【36】";
		String sql = "SELECT * FROM LANQIAO_ACCESS 【35】order BY ACCESSFLOW 【36】desc";
		return new ObjectUtil<Access>().getList(sql, Access.class,null);
	}
	
	/**
	 * 查找最大访问量
	 * @return 最大访问量
	 */
	public int getMaxAccessFlow(){
		//String sql = "SELECT 【37】(ACCESSFLOW) as m FROM LANQIAO_ACCESS";
		String sql = "SELECT 【37】MAX(ACCESSFLOW) as m FROM LANQIAO_ACCESS";
		BigDecimal b = (BigDecimal) new ObjectUtil<Access>().queryIntSql(sql, null).get("m");
		return b.intValue();
	}
}
